As computing needs of businesses and other organizations have grown, various computing architectures have been employed to meet these needs. One architecture involves the use of distributed computing clusters. A cluster contains multiple computers, each potentially with multiple processing cores, such that the cluster, as a whole, can provide substantial processing resources. A computer acting as a scheduler for the cluster can assign one or more of the cores to different jobs such that, at any time, the cluster can simultaneously execute multiple jobs, possibly from different clients.
A conventional policy used by schedulers in computing clusters to allocate computing resources to jobs is known as a first come, first served allocation. With such an approach, clients submit jobs to the scheduler. Along with a submission of a job, the client may specify a maximum and a minimum number of resources for that job. The scheduler queues jobs as they are received and assigns the jobs to resources as the resources become available. When the cluster contains enough resources, not already allocated to other jobs, to meet the minimum requirements of the first job in the queue, un-assigned resources may be assigned to that job. That job may be assigned resources up to the maximum number of resources requested for that job. Other resources that are available may be assigned to other jobs that have been queued.
A refinement of a first come, first served policy is to incorporate priority of jobs into decisions about which jobs are first allocated resources. With this policy, jobs that are in the queue and ready to execute with higher priority are allocated resources before jobs with lower priority. Though, as between jobs of equal priority, those that are first added to the queue are first assigned resources.